printoperation-unix: Fix a use-after-free
authorMatthias Clasen <mclasen@redhat.com>
Tue, 12 May 2020 18:09:51 +0000 (14:09 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 12 May 2020 18:09:51 +0000 (14:09 -0400)
It turns out that finish_print destroys the
PrintResponseData, so we can't access it afterwards.

gtk/gtkprintoperation-unix.c

index f6b2195e17b480d818a92e24505054a5102813ee..87d97e240ec14a18de79c9a7962695143373c111 100644 (file)
@@ -650,6 +650,9 @@ handle_print_response (GtkWidget *dialog,
       gtk_print_operation_set_print_settings (rdata->op, settings);
       g_signal_emit_by_name (rdata->op, "custom-widget-apply", rdata->op->priv->custom_widget);
     }
+  if (rdata->loop)
+    g_main_loop_quit (rdata->loop);
   
   finish_print (rdata, printer, page_setup, settings, page_setup_set);
 
@@ -657,9 +660,6 @@ handle_print_response (GtkWidget *dialog,
     g_object_unref (settings);
     
   gtk_window_destroy (GTK_WINDOW (pd));
-  if (rdata->loop)
-    g_main_loop_quit (rdata->loop);
 }